Skip to main content
Version: 1.6.x

v1.6.0

Release Date

April 17, 2026


Highlights

This release centers on a major refactor of the Job module, introducing a clean Job / Operator / Executor / Trial abstraction. On top of this foundation, two new job types are now supported — BashJob (with OSS artifact mirroring) and HarborJob. The CLI rock job run command has been reworked with strict YAML validation and auto job-type detection.


Job Module

New Architecture

Job / Operator / Executor / Trial Abstraction

  • NEW: Refactored the Job module into a layered architecture: JobOperatorExecutorTrial. This decouples job orchestration, scheduling, execution, and per-attempt logic, making it easy to add new job types (#779, #780)

  • Hoisted on_sandbox_ready backfill logic to AbstractTrial to share across all trial types (#788, #789)

BashJob

  • NEW: BashJob trial support — submit shell scripts as jobs via the SDK or CLI. See examples/bash/simple_bash_job_demo.sh (#772)

  • NEW: BashJob OSS Mirror — automatically uploads job artifacts to OSS after completion (#823)

  • Added claw-eval BashJob demo under examples/evaluation/claw_eval/ (#804)

HarborJob

  • NEW: HarborJob trial support, enabling agent-style job submission via the new Job abstraction (#798)

Configuration & Validation

Job Type Auto-Detection

  • NEW: rock job run now auto-detects job type from YAML via strict Pydantic model validation — no need to specify --type (#814)

Dual-Mode Input

  • NEW: rock job run reworked to support both --config (full YAML) and inline argument modes with strict validation and clearer error messages (#818)

Native Template Config

  • NEW: Added TemplateConfig and template field to NativeConfig for template-based job definitions (#786)

Auto-Generated job_name

  • Truncate long path segments when auto-generating job_name to avoid downstream length limits (#791)

Default Timeout Increased

  • Increased default JobConfig timeout from 3600s to 7200s to better match real-world long-running jobs (#806, #810)

Bug Fixes

  • JobConfig.experiment_id now takes priority over environment.experiment_id to give callers explicit control (#822)

  • BashTrial.collect now correctly populates raw_output and exit_code (#808)

  • Removed redundant shebang and set -e injection from BashTrial.build() to honor user scripts (#816)


EnvHub

Refactoring

  • BREAKING: JobEnvironmentConfig has been moved to envhub as EnvironmentConfig. Update import paths accordingly (#800)

  • Removed the deprecated auto_stop parameter from EnvironmentConfig — sandbox lifetime is now controlled via auto_delete_seconds (introduced in v1.5.0) (#820)

  • Refactored EnvHub uploads pipeline for clearer separation between client and server responsibilities (#802)


Admin

Database

  • Enlarged SandboxRecord.image column from 255 to 512 chars to support longer registry paths, and disabled asyncpg prepared-statement cache to avoid PgBouncer compatibility issues (#794)

CLI

  • Lazy-import psutil in the admin stop command to speed up unrelated CLI invocations and avoid import-time failures when psutil is unavailable (#831)

Testing & CI

  • Added SELECT 1 readiness check to the pg_container test fixture to avoid flaky integration tests (#778)

  • Applied repo-wide ruff format pass and translated remaining Chinese comments to English (#812)


Migration Notes

  • auto_stop removed: Update any EnvironmentConfig usage that relied on auto_stop. Use auto_delete_seconds (introduced in v1.5.0) instead.

  • JobEnvironmentConfigEnvironmentConfig: Update imports from rock.sdk.agent.models.job to rock.sdk.envhub.

  • Default Job timeout: Jobs that previously hit the 3600s timeout will now run up to 7200s by default. Set JobConfig.timeout explicitly if you need the old behavior.

  • rock job run: The CLI now validates YAML strictly. Configs with unknown or missing fields that previously passed silently will now fail fast.